/**
 * 心知天气 API 接口
 * 文档：https://seniverse.yuque.com/hyper_data/api_v3
 */

const WEATHER_API_KEY = 'SQf0pZn6JesnCoPaI' // 请替换为你的心知天气 API Key
const WEATHER_API_BASE = 'https://api.seniverse.com/v3'

/**
 * 获取城市实时天气
 * @param {string} location - 城市名称或城市代码
 * @returns {Promise<Object>} 天气数据
 */
export const getWeather = async (location = 'wuhan') => {
  try {
    const url = `${WEATHER_API_BASE}/weather/now.json?key=${WEATHER_API_KEY}&location=${location}&language=zh-Hans&unit=c`
    
    const response = await fetch(url)
    
    if (!response.ok) {
      throw new Error(`Weather API error: ${response.status}`)
    }
    
    const data = await response.json()
    
    if (data.results && data.results.length > 0) {
      const result = data.results[0]
      return {
        location: result.location.name,
        temperature: result.now.temperature,
        text: result.now.text,
        code: result.now.code,
        lastUpdate: result.last_update
      }
    }
    
    throw new Error('No weather data available')
  } catch (error) {
    console.error('Failed to fetch weather:', error)
    // 返回默认数据
    return {
      location: '武汉',
      temperature: '--',
      text: '暂无数据',
      code: '9999',
      lastUpdate: new Date().toISOString()
    }
  }
}

/**
 * 根据天气代码获取对应的 emoji
 * @param {string} code - 天气代码
 * @returns {string} emoji
 */
export const getWeatherEmoji = (code) => {
  const weatherMap = {
    '0': '☀️',   // 晴
    '1': '☀️',   // 晴
    '2': '☀️',   // 晴
    '3': '☀️',   // 晴
    '4': '🌤️',  // 多云
    '5': '🌤️',  // 晴间多云
    '6': '🌤️',  // 晴间多云
    '7': '🌤️',  // 大部多云
    '8': '🌤️',  // 大部多云
    '9': '☁️',   // 阴
    '10': '🌦️', // 阵雨
    '11': '🌧️', // 雷阵雨
    '12': '🌧️', // 雷阵雨伴有冰雹
    '13': '🌧️', // 小雨
    '14': '🌧️', // 中雨
    '15': '🌧️', // 大雨
    '16': '🌧️', // 暴雨
    '17': '🌧️', // 大暴雨
    '18': '🌧️', // 特大暴雨
    '19': '🌨️', // 冻雨
    '20': '🌧️', // 雨夹雪
    '21': '🌧️', // 阵雨夹雪
    '22': '❄️',  // 阵雪
    '23': '❄️',  // 小雪
    '24': '❄️',  // 中雪
    '25': '❄️',  // 大雪
    '26': '❄️',  // 暴雪
    '27': '🌫️', // 浮尘
    '28': '🌫️', // 扬沙
    '29': '🌫️', // 沙尘暴
    '30': '🌫️', // 强沙尘暴
    '31': '🌫️', // 雾
    '32': '🌫️', // 霾
    '33': '💨', // 风
    '34': '💨', // 大风
    '35': '🌪️', // 飓风
    '36': '🌪️', // 热带风暴
    '37': '🌪️', // 龙卷风
    '38': '❄️',  // 冷
    '99': '🌡️', // 未知
  }
  
  return weatherMap[code] || '🌡️'
}

